/**
 * 类的静态成员
 */
#include <string>

class Account {
public:
    void calculate() { amount += amount * interestRate; }

    static double rate() { return interestRate; };

    static void rate(double);

private:
    std::string owner;
    double amount;
    static double interestRate; // 类内不能直接初始化
    static constexpr int period = 30; // constexpr 修饰才可以在类内初始化

    static double initRate();
};


// 当在类的外部定义静态成员时，不能重复static关键字，该关键字只出现在类内部的声明语句
void Account::rate(double newRate) {
    interestRate = newRate;
}

double Account::initRate() { return 0.0; }

double Account::interestRate = initRate();  // 定义并初始化一个静态成员变量

int main() {
    Account a;
    double r1 = Account::rate();
    double r2 = a.rate();
}